#!/usr/bin/env python
# _*_ coding: utf-8 _*_
# @Time : 2025/5/15 09:51
# @Author : fanzf
# @Version：V 0.1
# @File : excel2db.py
# @desc :
import openpyxl

from cq_gwy_job.CqGwyJobItem import CqGwyJobItem
from cq_gwy_job.pipelines import SQLitePipeline

local_file_path = '/Users/fanzhenfeng/Downloads/P020250211397238772291.xlsx'
row_head = ('序号',
'地区部门',
'招录单位',
'咨询电话',
'招录指标',
'职位类别',
'职位名称',
'职级层次',
'学历',
'学位',
'专业',
'2年及以上基层工作经历要求',
'政治面貌',
'笔试开考比例',
'申论考试类型',
'专业科目考试-公安类专业科目',
'专业科目考试-法律基础知识',
'体能测评比例',
'专业能力测试-是否设置',
'专业能力测试-测试比例',
'面试比例',
'考察比例',
'其他要求',
'职位描述')

'''
select gjd.地区部门,gjd.招录单位,gjd.职位描述,gjd.专业,gjd.招录指标,gd.交费人数,round(1.0 * gd.计划招考人数 / gd.交费人数, 4) rate,gjd.其他要求
,gjd.学位,gjd.* from gwy_job_data gjd
                 left join gwy_data gd on gd.序号=gjd.序号
                 where gjd.专业 like '%电子信息%' and (gjd.其他要求 not like '%2025%' and gjd.其他要求 not like '%女性%')
and gjd.学位 not like '%硕士%' and gjd.招录单位 not like '%公安%' and gjd.招录单位 not like '%监狱%' and gjd.地区部门 not like '%公安%'
                 and gjd."2年及以上基层工作经历要求"!='是' and gjd.政治面貌 not like '%党员%'
order by round(1.0 * gd.计划招考人数 / gd.交费人数, 4) desc
'''


def excel_to_db(excel_path):
    sql_lite = SQLitePipeline()
    sql_lite.open_spider()
    item_list = handle_excel(excel_path)
    for item in item_list:
        sql_lite.process_item(item)
    sql_lite.close_spider()


def handle_excel(file_path):
    try:
        excel = openpyxl.load_workbook(file_path)
        sheet_list = excel.sheetnames
        excel_sheet = excel[sheet_list[0]]
        rows = excel_sheet.rows
        # 遍历Excel表，并用list存储每行数据，每行数据为一个报表对象
        cq_gwy_job_item_list = []
        for row in rows:
            if row[0].row <= 6:
                continue
            cq_gwy_job_item = CqGwyJobItem()
            for col in row:
                cq_gwy_job_item.__setattr__(row_head[col.column - 1], col.value)
            # print(cq_gwy_job_item.__dict__)
            cq_gwy_job_item_list.append(cq_gwy_job_item)
    except Exception as e:
        print("handle file_path:{},throw exception:{}".format(file_path, e))
    return cq_gwy_job_item_list


excel_to_db(local_file_path)
